<?php
namespace App\Exports;
use App\Category;
use App\Product;
use App\SKU;
use App\Tra_Tax;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
// class ProductExport implements FromCollection, WithHeadings, WithEvents, WithStrictNullComparison, WithStyles
{
    // /**
    // * @return \Illuminate\Support\Collection
    // */
    // protected $results;
    // public function collection()
    // {
    //     $user = Auth::user();
    //     if($user->type=="staff"){
    //         $this->id = $user->created_by;
    //     }else{
    //         $this->id = $user->id;
    //     }
    //     $this->results = $this->getProducts();
    //     return $this->results;
    // }
    // public function getProducts(){
    //     $product = Product::select('product_name','description','category','price','sale_price','quantity','sku',
    //     'sku_quantity','bar_code','tax','sold_by')
    //     ->where('created_by',$this->id)->where('status',1)->take(1)->get();
    //     $product[0]->category = Category::where('id',$product[0]->category)->pluck('name')->first();
    //     return $product;
    // }
    // public function headings(): array
    // {
    //     return [
    //       'Product Name','Description','Category','Price','Sale Price','Quantity','SKU','SKU Quantity',
    //       'Bar Code','Tax','Sold By'
    //     ];
    // }
    // public function styles(Worksheet $sheet)
    // {
    //     return [
    //          1    => ['font' => ['bold' => true]],
    //     ];
    // }
    // public function registerEvents(): array
    // {
    //     return [
    //         AfterSheet::class => function(AfterSheet $event) {
               
    //             //sheet object & no. rows
    //             $row_count = 50;
    //             $column_count = count($this->results[0]->toArray());
    //             $sheet = $event->sheet;
    //             //header color
    //             $sheet->getDelegate()->getStyle('A1:L1')
    //             ->getFill()
    //             ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    //             ->getStartColor()
    //             ->setARGB('ADD8E6');
    //             //category dropdown
    //             $category = Category::where('created_by',$this->id)->pluck('name')->toArray();
    //             $validation2 = $sheet->getCell('C2')->getDataValidation();
    //             $validation2->setType(DataValidation::TYPE_LIST );
    //             $validation2->setErrorStyle(DataValidation::STYLE_INFORMATION );
    //             $validation2->setAllowBlank(false);
    //             $validation2->setShowInputMessage(true);
    //             $validation2->setShowErrorMessage(true);
    //             $validation2->setShowDropDown(true);
    //             $validation2->setErrorTitle('Input error');
    //             $validation2->setError('Value is not in list.');
    //             $validation2->setPromptTitle('Pick from category list');
    //             $validation2->setPrompt('Please pick a value from the drop-down list.');
    //             $validation2->setFormula1('"' . implode(',',$category). '"');
    //             for ($i = 3; $i <= $row_count; $i++) {
    //                 $event->sheet->getCell("C{$i}")->setDataValidation(clone $validation2);
    //             }
    //             //sku dropdown
    //             $sku = SKU::where('created_by',$this->id)->pluck('unit')->toArray();
    //             $validation = $sheet->getCell('G2')->getDataValidation();
    //             $validation->setType(DataValidation::TYPE_LIST);
    //             $validation->setErrorStyle(DataValidation::STYLE_INFORMATION );
    //             $validation->setAllowBlank(false);
    //             $validation->setShowInputMessage(true);
    //             $validation->setShowErrorMessage(true);
    //             $validation->setShowDropDown(true);
    //             $validation->setErrorTitle('Input error');
    //             $validation->setError('Value is not in list.');
    //             $validation->setPromptTitle('Pick from sku list');
    //             $validation->setPrompt('Please pick a value from the drop-down list.');
    //             $validation->setFormula1('"' . implode(',',$sku). '"');
    //             for ($i = 3; $i <= $row_count; $i++) {
    //                 $event->sheet->getCell("G{$i}")->setDataValidation(clone $validation);
    //             }
    //             //tax dropdown
    //             $tax = 'A,B,C,D,E';
    //             $validation1 = $sheet->getCell('J2')->getDataValidation();
    //             $validation1->setType(DataValidation::TYPE_LIST );
    //             $validation1->setErrorStyle(DataValidation::STYLE_INFORMATION );
    //             $validation1->setAllowBlank(false);
    //             $validation1->setShowInputMessage(true);
    //             $validation1->setShowErrorMessage(true);
    //             $validation1->setShowDropDown(true);
    //             $validation1->setErrorTitle('Input error');
    //             $validation1->setError('Value is not in list.');
    //             $validation1->setPromptTitle('Pick from tax list');
    //             $validation1->setPrompt('Please pick a value from the drop-down list.');
    //             $validation1->setFormula1('"' . $tax. '"');
    //             for ($i = 3; $i <= $row_count; $i++) {
    //                 $event->sheet->getCell("J{$i}")->setDataValidation(clone $validation1);
    //             }
    //             //sold by dropdown
    //             $sold_by ="each,weight";
    //             $validation2 = $sheet->getCell('K2')->getDataValidation();
    //             $validation2->setType(DataValidation::TYPE_LIST );
    //             $validation2->setErrorStyle(DataValidation::STYLE_INFORMATION );
    //             $validation2->setAllowBlank(false);
    //             $validation2->setShowInputMessage(true);
    //             $validation2->setShowErrorMessage(true);
    //             $validation2->setShowDropDown(true);
    //             $validation2->setErrorTitle('Input error');
    //             $validation2->setError('Value is not in list.');
    //             $validation2->setPromptTitle('Pick from sold by list');
    //             $validation2->setPrompt('Please pick a value from the drop-down list.');
    //             $validation2->setFormula1('"' . $sold_by. '"');
    //             for ($i = 3; $i <= $row_count; $i++) {
    //                 $event->sheet->getCell("K{$i}")->setDataValidation(clone $validation2);
    //             }
    //             //set size of column as per the length
    //             for ($i = 1; $i <= $column_count; $i++) {
    //                 $column = Coordinate::stringFromColumnIndex($i);
    //                 $event->sheet->getColumnDimension($column)->setAutoSize(true);
    //             }
    //         },
    //     ];
    // }
}